home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / convert / ImportODBCMeta.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  6.1 KB  |  234 lines

  1. package com.extensibility.convert;
  2.  
  3. import com.extensibility.app.UI;
  4. import com.extensibility.xml.dt.DataTypeFactory;
  5. import java.sql.Connection;
  6. import java.sql.DatabaseMetaData;
  7. import java.sql.DriverManager;
  8. import java.sql.ResultSet;
  9. import java.sql.SQLException;
  10. import java.util.Enumeration;
  11. import java.util.Hashtable;
  12. import java.util.Vector;
  13. import sun.jdbc.odbc.JdbcOdbcDriver;
  14.  
  15. public class ImportODBCMeta implements MetaSpectIntf {
  16.    String sourceString = UI.getString("dialog.import.odbc.name");
  17.    String promptString = UI.getString("dialog.import.odbc.source");
  18.    String listPrompt = UI.getString("dialog.import.odbc.list");
  19.    String dbConnectString = "jdbc:odbc:";
  20.    String dbType = "Unknown";
  21.    String dbVersion = "Unknown";
  22.    String driverName = "Unknown";
  23.    String driverVersion = "Unknown";
  24.    Connection conn;
  25.  
  26.    public String getPrompt(int var1) {
  27.       switch (var1) {
  28.          case 1:
  29.             return this.sourceString;
  30.          case 2:
  31.             return this.promptString;
  32.          case 3:
  33.             return this.listPrompt;
  34.          case 4:
  35.             return null;
  36.          default:
  37.             return "";
  38.       }
  39.    }
  40.  
  41.    public void open(String var1, String var2, String var3) throws SQLException, ClassNotFoundException {
  42.       this.dbConnectString = String.valueOf(this.dbConnectString).concat(String.valueOf(var1));
  43.       String var4 = System.getProperty("java.vendor").toLowerCase();
  44.       DriverManager.registerDriver(new JdbcOdbcDriver());
  45.       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  46.       this.conn = DriverManager.getConnection(this.dbConnectString, var2, var3);
  47.       DatabaseMetaData var5 = this.conn.getMetaData();
  48.       this.dbType = var5.getDatabaseProductName();
  49.       this.dbVersion = var5.getDatabaseProductVersion();
  50.       this.driverName = var5.getDriverName();
  51.       this.driverVersion = var5.getDriverVersion();
  52.    }
  53.  
  54.    public Enumeration getChoiceList() throws SQLException {
  55.       Vector var1 = new Vector();
  56.       DatabaseMetaData var2 = this.conn.getMetaData();
  57.       ResultSet var3 = var2.getTables((String)null, (String)null, (String)null, new String[]{"TABLE", "VIEW"});
  58.       byte var4 = 1;
  59.       byte var5 = 2;
  60.       byte var6 = 3;
  61.  
  62.       while(var3.next()) {
  63.          var1.addElement(new TableSpec((ImportODBCMeta)null, var3.getString(var4), var3.getString(var5), var3.getString(var6)));
  64.       }
  65.  
  66.       var3.close();
  67.       Object var7 = null;
  68.       return var1.elements();
  69.    }
  70.  
  71.    public Enumeration getMetaInfo(MetaSpectIntf.TableIntf var1) throws SQLException {
  72.       TableSpec var2 = (TableSpec)var1;
  73.       Vector var3 = new Vector();
  74.       DatabaseMetaData var4 = this.conn.getMetaData();
  75.       ResultSet var5 = var4.getColumns(var2.catalog, var2.schema, var2.table, (String)null);
  76.  
  77.       while(var5.next()) {
  78.          Hashtable var6 = this.getOneColumn(var5);
  79.          var3.addElement(var6);
  80.       }
  81.  
  82.       var5.close();
  83.       ResultSet var47 = null;
  84.       byte var7 = 4;
  85.  
  86.       try {
  87.          var47 = var4.getPrimaryKeys(var2.catalog, var2.schema, var2.table);
  88.  
  89.          while(var47.next()) {
  90.             this.setPrimaryKey(var3, var47.getString(var7));
  91.          }
  92.       } catch (SQLException var45) {
  93.          if (var2.table.equals("EMPLOYEE")) {
  94.             this.setPrimaryKey(var3, "NUM");
  95.          }
  96.       } finally {
  97.          try {
  98.             if (var47 != null) {
  99.                var47.close();
  100.             }
  101.          } catch (SQLException var42) {
  102.          }
  103.  
  104.       }
  105.  
  106.       var47 = null;
  107.       byte var11 = 1;
  108.       byte var12 = 2;
  109.       byte var13 = 3;
  110.       byte var14 = 4;
  111.       boolean var15 = true;
  112.       boolean var16 = true;
  113.       boolean var17 = true;
  114.       byte var18 = 8;
  115.  
  116.       try {
  117.          var47 = var4.getImportedKeys(var2.catalog, var2.schema, var2.table);
  118.  
  119.          while(var47.next()) {
  120.             this.setForeignKey(var3, var47.getString(var11), var47.getString(var12), var47.getString(var13), var47.getString(var14), var47.getString(var18));
  121.          }
  122.       } catch (SQLException var43) {
  123.          if (var2.table.equals("PERF_REVIEW") || var2.table.equals("COMP_CHANGE")) {
  124.             this.setForeignKey(var3, var2.catalog, var2.schema, "EMPLOYEE", "NUM", "EMP_NUM");
  125.          }
  126.       } finally {
  127.          try {
  128.             if (var47 != null) {
  129.                var47.close();
  130.             }
  131.          } catch (SQLException var41) {
  132.          }
  133.  
  134.       }
  135.  
  136.       return var3.elements();
  137.    }
  138.  
  139.    protected Hashtable getOneColumn(ResultSet var1) throws SQLException {
  140.       byte var2 = 4;
  141.       byte var3 = 6;
  142.       byte var4 = 5;
  143.       byte var5 = 7;
  144.       byte var6 = 11;
  145.       byte var7 = 12;
  146.       byte var8 = 13;
  147.       byte var9 = 17;
  148.       1 var10 = new 1((ImportODBCMeta)null);
  149.       ((Hashtable)var10).put("NAME", var1.getString(var2));
  150.       ((Hashtable)var10).put("DATATYPE", DataTypeFactory.createDataTypeFromSQLTypes(var1.getShort(var4)));
  151.  
  152.       try {
  153.          ((Hashtable)var10).put("NATIVEDATATYPE", var1.getString(var3));
  154.       } catch (SQLException var17) {
  155.       }
  156.  
  157.       try {
  158.          ((Hashtable)var10).put("LEN", new Integer(var1.getInt(var5)));
  159.       } catch (SQLException var16) {
  160.       }
  161.  
  162.       try {
  163.          ((Hashtable)var10).put("ISNULLABLE", new Boolean(var1.getInt(var6) != 0));
  164.       } catch (SQLException var15) {
  165.       }
  166.  
  167.       try {
  168.          ((Hashtable)var10).put("REMARKS", var1.getString(var7));
  169.       } catch (SQLException var14) {
  170.       }
  171.  
  172.       try {
  173.          ((Hashtable)var10).put("DEFAULTVAL", var1.getString(var8));
  174.       } catch (SQLException var13) {
  175.       }
  176.  
  177.       try {
  178.          ((Hashtable)var10).put("ORDINAL", new Integer(var1.getInt(var9)));
  179.       } catch (SQLException var12) {
  180.       }
  181.  
  182.       ((Hashtable)var10).put("IS_ID", Boolean.FALSE);
  183.       return var10;
  184.    }
  185.  
  186.    protected void setForeignKey(Vector var1, String var2, String var3, String var4, String var5, String var6) {
  187.       Enumeration var7 = var1.elements();
  188.  
  189.       while(var7.hasMoreElements()) {
  190.          Hashtable var8 = (Hashtable)var7.nextElement();
  191.          String var9 = (String)var8.get("NAME");
  192.          if (var9.equalsIgnoreCase(var6)) {
  193.             var8.put("REF_TABLE", new TableSpec((ImportODBCMeta)null, var2, var3, var4));
  194.             var8.put("REF_COL", var5);
  195.             break;
  196.          }
  197.       }
  198.  
  199.    }
  200.  
  201.    protected void setPrimaryKey(Vector var1, String var2) {
  202.       Enumeration var3 = var1.elements();
  203.  
  204.       while(var3.hasMoreElements()) {
  205.          Hashtable var4 = (Hashtable)var3.nextElement();
  206.          String var5 = (String)var4.get("NAME");
  207.          if (var5.equalsIgnoreCase(var2)) {
  208.             var4.put("IS_ID", Boolean.TRUE);
  209.             break;
  210.          }
  211.       }
  212.  
  213.    }
  214.  
  215.    public void close() throws SQLException {
  216.       if (this.conn != null) {
  217.          this.conn.close();
  218.       }
  219.  
  220.    }
  221.  
  222.    public Enumeration getRefineList(MetaSpectIntf.TableIntf var1) throws SQLException {
  223.       return null;
  224.    }
  225.  
  226.    public void finalize() {
  227.       try {
  228.          this.close();
  229.       } catch (SQLException var2) {
  230.       }
  231.  
  232.    }
  233. }
  234.